forget tens
: tens a /mod ;

: digits 
tens
tens
tens
tens
tens 6 ;

: lead
swap dup if swap exit else drop
recurse then 1- ;

: digemit 30 + emit ;
: expand digits lead ;
: do swap digemit 1- ;
: each begin do dup 0 = until ;
: dec dup 
if   
expand each drop 
else 30 + emit then
20 emit ;

: mx 1 ;
: last dup dup c@ + c@ 30 - 

  mx dup a * to mx *
  rot + swap ;
: less dup dup c@ 1- swap c! ;

: doit begin  
  last less
  dup c@ 0 = 
  until ;

: hex 1 to mx 0 word doit drop ;

    
: .dec
 sp0 1- 1- begin
dup sp@ 2+ >
while
dup @ dec 1- 1- repeat drop ;

: load$ s" $" 
dup 1+ swap c@ here @ loadb drop 
ae @ 2 - here @ ;

: blocks ar ! xr ! bdcd jsr-wrap
space ;

: getreg dup c@ swap 1+ c@ ; 

: tobl 2 + dup getreg blocks 2 + ;
: to0 begin dup c@ dup
  0> if
     emit
     1+ 
     else drop 1+ cr exit
     then again ;
 
: ls load$ begin 
2dup <> if
       tobl
       to0
       else 2drop exit
       then again ;
: clear 0 d400 18 fill ;
: scd swap c! dup ;

: ding clear d400 dup 18 + 
        f scd 1+
       6e scd 5 +
        9 scd 6 +
        9 scd 4 +
       11 swap c! 4 +
       10 swap c! ;

: delay 3ff begin 
             dup 0> 
             while 
             1- repeat drop ;


: ring begin ding delay again ;

: $ immed hex [compile] literal ;